package com.zbj.homemade.spring.beans;

/**
 * @program: principle
 * @description:
 * {@link BeanDefinition} <bean定义>注册器
 * 作用：将bean定义注入spring内部容器
 * @author: Yinn
 * @create: 2019-02-28 16:22
 **/
public interface BeanDefinitionRegistry {

    /**
     * 注册bean定义
     * key -> beanName,value->beanDefinition
     */
    void registerBeanDefinition(String beanName, BeanDefinition beanDefinition);

    /**
     * 删除
     */
    void removeBeanDefinition(String beanName);

    /**
     * 获取单个
     */
    BeanDefinition getBeanDefinition(String beanName);

    /**
     * 包含
     */
    boolean containsBeanDefinition(String beanName);

    /**
     * 获取全部
     */
    String[] getBeanDefinitionNames();

    /**
     * 统计
     */
    int getBeanDefinitionCount();
}
